package com.laolei.core.kafka;

import java.io.Serializable;
import java.util.List;

import org.apache.kafka.common.config.types.Password;
import org.springframework.boot.context.properties.ConfigurationProperties;

@ConfigurationProperties(prefix = "spring.kafka.core")
public class CoreConfig implements Serializable {
	private static final long serialVersionUID = 1L;
	/**
	 * 
	 * 默认值: 127.0.0.1:9092
	 */
	private List<String> bootstrapServers;
	/**
	 * 默认值:null
	 */
	private Password sslKeyPassword = null;
	/**
	 * 默认值:null
	 */
	private String sslKeystoreLocation = null;
	/**
	 * 默认值:null
	 */
	private Password sslKeystorePassword = null;
	/**
	 * 默认值:null
	 */
	private String sslTruststoreLocation = null;
	/**
	 * 默认值:null
	 */
	private Password sslTruststorePassword = null;
	/**
	 * 默认值:540000
	 */
	private Long connectionsMaxIdleMs = 540000L;
	/**
	 * 默认值:65536
	 */
	private int receiveBufferBytes = 65536;
	/**
	 * 默认值:40000
	 */
	private int requestTimeoutMs = 40000;
	/**
	 * 默认值:null
	 */
	private String saslKerberosServiceName = null;
	/**
	 * 默认值:GSSAPI
	 */
	private String saslMechanism = "GSSAPI";
	/**
	 * 默认值:PLAINTEXT
	 */
	private String securityProtocol = "PLAINTEXT";
	/**
	 * 默认值:131072
	 */
	private int sendBufferBytes = 131072;
	/**
	 * 默认值:[TLSv1.2, TLSv1.1, TLSv1]
	 */
	private List<String> sslEnabledProtocols;
	/**
	 * 默认值:JKS
	 */
	private String sslKeystoreType = "JKS";
	/**
	 * 默认值:TLS
	 */
	private String sslProtocol = "TLS";
	/**
	 * 默认值:null
	 */
	private String sslProvider = null;
	/**
	 * 默认值:JKS
	 */
	private String sslTruststoreType = "JKS";
	/**
	 * 默认值:
	 */
	private String clientId;
	/**
	 * 默认值:null
	 */
	private List<Class<?>> interceptorClasses = null;
	/**
	 * 默认值:300000
	 */
	private Long metadataMaxAgeMs = 300000L;
	/**
	 * 默认值:[]
	 */
	private List<?> metricReporters;
	/**
	 * 默认值:2
	 */
	private int metricsNumSamples = 2;
	/**
	 * 默认值:30000
	 */
	private Long metricsSampleWindowMs = 30000L;
	/**
	 * 默认值:50
	 */
	private Long reconnectBackoffMs = 50L;
	/**
	 * 默认值:100
	 */
	private Long retryBackoffMs = 100L;
	/**
	 * 默认值:/usr/bin/kinit
	 */
	private String saslKerberosKinitCmd = "/usr/bin/kinit";
	/**
	 * 默认值:60000
	 */
	private Long saslKerberosMinTimeBeforeRelogin = 60000L;
	/**
	 * 默认值:0.05
	 */
	private Double saslKerberosTicketRenewJitter = 0.05;
	/**
	 * 默认值:0.8
	 */
	private Double saslKerberosTicketRenewWindowFactor = 0.8;
	/**
	 * 默认值:null
	 */
	private List<String> sslCipherSuites = null;
	/**
	 * 默认值:null
	 */
	private String sslEndpointIdentificationAlgorithm = null;
	/**
	 * 默认值:SunX509
	 */
	private String sslKeymanagerAlgorithm = "SunX509";
	/**
	 * 默认值:PKIX
	 */
	private String sslTrustmanagerAlgorithm = "PKIX";

	public List<String> getBootstrapServers() {
		return bootstrapServers;
	}

	public void setBootstrapServers(List<String> bootstrapServers) {
		this.bootstrapServers = bootstrapServers;
	}

	public Password getSslKeyPassword() {
		return sslKeyPassword;
	}

	public void setSslKeyPassword(Password sslKeyPassword) {
		this.sslKeyPassword = sslKeyPassword;
	}

	public String getSslKeystoreLocation() {
		return sslKeystoreLocation;
	}

	public void setSslKeystoreLocation(String sslKeystoreLocation) {
		this.sslKeystoreLocation = sslKeystoreLocation;
	}

	public Password getSslKeystorePassword() {
		return sslKeystorePassword;
	}

	public void setSslKeystorePassword(Password sslKeystorePassword) {
		this.sslKeystorePassword = sslKeystorePassword;
	}

	public String getSslTruststoreLocation() {
		return sslTruststoreLocation;
	}

	public void setSslTruststoreLocation(String sslTruststoreLocation) {
		this.sslTruststoreLocation = sslTruststoreLocation;
	}

	public Password getSslTruststorePassword() {
		return sslTruststorePassword;
	}

	public void setSslTruststorePassword(Password sslTruststorePassword) {
		this.sslTruststorePassword = sslTruststorePassword;
	}

	public Long getConnectionsMaxIdleMs() {
		return connectionsMaxIdleMs;
	}

	public void setConnectionsMaxIdleMs(Long connectionsMaxIdleMs) {
		this.connectionsMaxIdleMs = connectionsMaxIdleMs;
	}

	public int getReceiveBufferBytes() {
		return receiveBufferBytes;
	}

	public void setReceiveBufferBytes(int receiveBufferBytes) {
		this.receiveBufferBytes = receiveBufferBytes;
	}

	public int getRequestTimeoutMs() {
		return requestTimeoutMs;
	}

	public void setRequestTimeoutMs(int requestTimeoutMs) {
		this.requestTimeoutMs = requestTimeoutMs;
	}

	public String getSaslKerberosServiceName() {
		return saslKerberosServiceName;
	}

	public void setSaslKerberosServiceName(String saslKerberosServiceName) {
		this.saslKerberosServiceName = saslKerberosServiceName;
	}

	public String getSaslMechanism() {
		return saslMechanism;
	}

	public void setSaslMechanism(String saslMechanism) {
		this.saslMechanism = saslMechanism;
	}

	public String getSecurityProtocol() {
		return securityProtocol;
	}

	public void setSecurityProtocol(String securityProtocol) {
		this.securityProtocol = securityProtocol;
	}

	public int getSendBufferBytes() {
		return sendBufferBytes;
	}

	public void setSendBufferBytes(int sendBufferBytes) {
		this.sendBufferBytes = sendBufferBytes;
	}

	public List<String> getSslEnabledProtocols() {
		return sslEnabledProtocols;
	}

	public void setSslEnabledProtocols(List<String> sslEnabledProtocols) {
		this.sslEnabledProtocols = sslEnabledProtocols;
	}

	public String getSslKeystoreType() {
		return sslKeystoreType;
	}

	public void setSslKeystoreType(String sslKeystoreType) {
		this.sslKeystoreType = sslKeystoreType;
	}

	public String getSslProtocol() {
		return sslProtocol;
	}

	public void setSslProtocol(String sslProtocol) {
		this.sslProtocol = sslProtocol;
	}

	public String getSslProvider() {
		return sslProvider;
	}

	public void setSslProvider(String sslProvider) {
		this.sslProvider = sslProvider;
	}

	public String getSslTruststoreType() {
		return sslTruststoreType;
	}

	public void setSslTruststoreType(String sslTruststoreType) {
		this.sslTruststoreType = sslTruststoreType;
	}

	public String getClientId() {
		return clientId;
	}

	public void setClientId(String clientId) {
		this.clientId = clientId;
	}

	public List<Class<?>> getInterceptorClasses() {
		return interceptorClasses;
	}

	public void setInterceptorClasses(List<Class<?>> interceptorClasses) {
		this.interceptorClasses = interceptorClasses;
	}

	public Long getMetadataMaxAgeMs() {
		return metadataMaxAgeMs;
	}

	public void setMetadataMaxAgeMs(Long metadataMaxAgeMs) {
		this.metadataMaxAgeMs = metadataMaxAgeMs;
	}

	public List<?> getMetricReporters() {
		return metricReporters;
	}

	public void setMetricReporters(List<?> metricReporters) {
		this.metricReporters = metricReporters;
	}

	public int getMetricsNumSamples() {
		return metricsNumSamples;
	}

	public void setMetricsNumSamples(int metricsNumSamples) {
		this.metricsNumSamples = metricsNumSamples;
	}

	public Long getMetricsSampleWindowMs() {
		return metricsSampleWindowMs;
	}

	public void setMetricsSampleWindowMs(Long metricsSampleWindowMs) {
		this.metricsSampleWindowMs = metricsSampleWindowMs;
	}

	public Long getReconnectBackoffMs() {
		return reconnectBackoffMs;
	}

	public void setReconnectBackoffMs(Long reconnectBackoffMs) {
		this.reconnectBackoffMs = reconnectBackoffMs;
	}

	public Long getRetryBackoffMs() {
		return retryBackoffMs;
	}

	public void setRetryBackoffMs(Long retryBackoffMs) {
		this.retryBackoffMs = retryBackoffMs;
	}

	public String getSaslKerberosKinitCmd() {
		return saslKerberosKinitCmd;
	}

	public void setSaslKerberosKinitCmd(String saslKerberosKinitCmd) {
		this.saslKerberosKinitCmd = saslKerberosKinitCmd;
	}

	public Long getSaslKerberosMinTimeBeforeRelogin() {
		return saslKerberosMinTimeBeforeRelogin;
	}

	public void setSaslKerberosMinTimeBeforeRelogin(Long saslKerberosMinTimeBeforeRelogin) {
		this.saslKerberosMinTimeBeforeRelogin = saslKerberosMinTimeBeforeRelogin;
	}

	public Double getSaslKerberosTicketRenewJitter() {
		return saslKerberosTicketRenewJitter;
	}

	public void setSaslKerberosTicketRenewJitter(Double saslKerberosTicketRenewJitter) {
		this.saslKerberosTicketRenewJitter = saslKerberosTicketRenewJitter;
	}

	public Double getSaslKerberosTicketRenewWindowFactor() {
		return saslKerberosTicketRenewWindowFactor;
	}

	public void setSaslKerberosTicketRenewWindowFactor(Double saslKerberosTicketRenewWindowFactor) {
		this.saslKerberosTicketRenewWindowFactor = saslKerberosTicketRenewWindowFactor;
	}

	public List<String> getSslCipherSuites() {
		return sslCipherSuites;
	}

	public void setSslCipherSuites(List<String> sslCipherSuites) {
		this.sslCipherSuites = sslCipherSuites;
	}

	public String getSslEndpointIdentificationAlgorithm() {
		return sslEndpointIdentificationAlgorithm;
	}

	public void setSslEndpointIdentificationAlgorithm(String sslEndpointIdentificationAlgorithm) {
		this.sslEndpointIdentificationAlgorithm = sslEndpointIdentificationAlgorithm;
	}

	public String getSslKeymanagerAlgorithm() {
		return sslKeymanagerAlgorithm;
	}

	public void setSslKeymanagerAlgorithm(String sslKeymanagerAlgorithm) {
		this.sslKeymanagerAlgorithm = sslKeymanagerAlgorithm;
	}

	public String getSslTrustmanagerAlgorithm() {
		return sslTrustmanagerAlgorithm;
	}

	public void setSslTrustmanagerAlgorithm(String sslTrustmanagerAlgorithm) {
		this.sslTrustmanagerAlgorithm = sslTrustmanagerAlgorithm;
	}
}
